/*
*    Phantom Test Driver v2.0 GUI Automation Software
*    Copyright (C) 2009  John C. Van Arsdall (john@phantomtest.com)
*
*    This program is free software; you can redistribute it and/or modify
*    it under the terms of the GNU General Public License as published by
*    the Free Software Foundation; either version 2 of the License, or
*    (at your option) any later version.
*
*    This program is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*    GNU General Public License for more details.
*
*    You should have received a copy of the GNU General Public License along
*    with this program; if not, write to the Free Software Foundation, Inc.,
*    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ptd;

/**
 *
 * @author John
 */
public class PTDRemoteRunner extends PTDScriptRunner {

    protected PTDRemoteMachine myMachine;
    protected PTDRemoteThread RemoteThread;
    // -----------------------------------------------------    
    public void setMachine(PTDRemoteMachine Machine){
        myMachine = Machine;
    }
    
    // -----------------------------------------------------    
    public int run(boolean bWait, boolean bDebug, boolean bProcessor){
        //if(PTDScriptThread.GlobalRunState == PTDScriptThread.THREAD_RUNNING){
        //    PTDMessageBox.MessageBox("Only one script can be run at a time.  Please wait for other scripts to finish.");
        //    MyOutput.display("Only one script can be run at a time.  Please wait for other scripts to finish.");
        //    return 0;            
        //}
        myMachine.setCurrentStatus("Running");
        RemoteThread = new PTDRemoteThread(this, this, bDoDisplay);
        RemoteThread.init(false);
        RemoteThread.setMachine(myMachine);
        RemoteThread.setScript(ScriptPath);
        RemoteThread.setArguments(Arguments);
        RemoteThread.bDebug = bDebug;
        RemoteThread.bProcessor = bProcessor;
        RemoteThread.start();
        setRunState(1);
        if(bWait){
           try{
               Thread.currentThread().sleep(1000);
           }catch (Exception e){
               Main.debug_out("Error in thread sleep");
           }
            
            while(RemoteThread.getRunState() == RemoteThread.THREAD_RUNNING){
                try{
                    Thread.currentThread().sleep(10);
                }catch (Exception e){
                    Main.debug_out("Error in thread sleep");
                }
            }
        }
    
        myMachine.setCurrentStatus("Stopped");
        setRunState(0);       
        return 1;
    }
    
    public void setScriptPath(String inPath){
        ScriptPath = inPath;
    }
}
